This invention relates to computing systems that are used for the provision of goods, services or information services. It relates in particular to a method and system for notifying end users over a network of the occurrence of an event.
The influence of the Internet is becoming all-pervasive in the modern economy. The ability to convey information around the world almost instantaneously is transforming the way many existing businesses operate. In addition, many new services are appearing which exploit the possibilities of the global communication network.
Internet services that rely on the transfer of real-time information have proliferated in recent years. Examples are many and varied, and include websites that provide up to the minute information regarding bathing conditions at beaches, and websites that display sports scores in real time. Weather conditions and the road traffic situation can also be updated on-line on a regular basis, as can Stock Market prices.
One area which has seen rapid growth is that of on-line auctions. Goods are offered for auction at many sites on the World Wide Web. If an Internet user desires an article currently being auctioned, he or she may place a bid on-line. As the auction of the article in question may extend for several days, there is a need to track the current highest bid over an extended period. The bidder may wish to be notified whenever the highest bid changes.
Given the vast amount of information generated on the Internet, a user may request to be notified whenever particular information becomes available. There are several notification mechanisms currently in use for informing users of particular events.
The most elementary notification mechanism is based on the xe2x80x9cpullxe2x80x9d technology where a client explicitly pulls new information from a server. Examples of websites using this technology for on-line auctions are known. Such systems tell the user to click on a reload button to see the latest information, for example the current highest bid in open-outcry auctions. This method has several disadvantages. It requires explicit user intervention to obtain the latest information, and this can be quite time consuming for the user. Also, since the user cannot correctly guess when the information content will change, this method leads to a waste of bandwidth resources when the user sends a request but the information has not changed. On the other hand, if the user waits too long before requesting the information it might be received too late; for example, after an auction has ended.
Another notification mechanism is xe2x80x9cclient pollingxe2x80x9d wherein the client periodically polls a server for new information. Again, the information is being pulled by the client, but this may be done by an application running automatically on the user""s system, without any intervention by the user. An example of this mechanism can be found in a website which uses an HTTP refresh mechanism to automatically refresh a web page displaying the latest scores for cricket matches every ninety seconds. Such polling schemes overcome the problem of user intervention by pulling information automatically on a periodic basis. However, these schemes have several disadvantages. The most important is bandwidth wastage. If the polling interval is kept small, the information content of the page is unlikely to change within one polling interval, and hence bandwidth resources are wasted in sending the fruitless client polling request. On the other hand, if the polling interval is long, the information may not get delivered to the user in time. If too many clients are polling a server frequently, there can be an enormous load on that server. In consequence, these polling schemes may not be highly scalable.
A third method for notification is based on a xe2x80x9cpushxe2x80x9d by the server, on a persistent connection initiated by the client. Once the client application has connected to the server, it remains connected. When the server has some information to send, it pushes that information on this open connection. Examples of such systems are most xe2x80x9cchatxe2x80x9d applications and the Yahoo(trademark) Messenger service. Although this mechanism supports the event-triggered delivery of a message, thereby guaranteeing timely notification, the method wastes server resources. The server needs to have open connections with a large number of clients that wish to receive real-time notification. This puts a restriction on the number of clients that can be on-line simultaneously and makes the system less scalable. To maintain an open connection, some form of xe2x80x9cI am alivexe2x80x9d message has to be periodically exchanged between the server and the client, and this too leads to bandwidth wastage.
Other system use email as a notification mechanism. There are several well-known examples of websites which allow users to receive email alerts for various predefined events. These email notifications do not have bandwidth wastage problems, but they cannot be regarded as real-time in nature, as there is no guaranteed upper limit to the delay between transmission and reception. The final portion of the path from the destination mail server to the client application uses either a polling scheme, or maintains an open connection. Furthermore, the highest bid update in an open-outcry auction should not be sent by email, as this would lead to a very large number of emails being sent to the user, wasting time and causing much frustration. This kind of frequently changing data is not suited to the email world.
There is consequently a need for a notification mechanism which allows real-time message notification without blocking server resources or requiring excessive bandwidth usage. The present invention seeks to at least partially meet this need.
By way of further background, the communication systems as described above are typically implemented on large computing systems which commonly employ a three-tier topology: 1) a presentation tier characterised by multiple workstations focussing on user interactions, 2) a business tier characterised by multiple servers executing application/business logic, and 3) a data tier characterised by multiple databases working on data storage and organization. The three tier elements may be interconnected by means of a Local or Wide Area Network (LAN/WAN) or the Internet.
The broad gist of the invention is for clients to register a set of events of interest and their identity with a server, such that when one such event occurs, the server causes a real-time connection over the network to transmit the event only to those interested clients.
According to a first aspect of the invention there is provided a method for notifying the occurrence of an event to one or more client processes over a communication network, the method comprising the steps of:
said one or more client processes registering a set of said events of interest and, when said client processes are currently active, registering their respective address identifiers with a server;
said server detecting the occurrence of an event;
said server identifying which of said client processes are interested in notification of said event and are currently active; and
said server causing a real-time connection over said network to transmit said notification to each identified client process.
According to a second aspect of the invention there is provided a method for notifying the occurrence of an event by one or more servers to one or more client processes over a communication network, the method comprising the steps of:
said one or more client processes registering a set of said events of interest and, when said clients are currently active, registering their respective address identifiers;
forming a first record of said client processes and their respective events of interest;
forming a second record containing current active ones of all said client processes and their respective address identifiers, said first and second records being available to said servers;
detecting the occurrence of an event;
identifying from said first record which of said client processes are interested in notification of said event; and
causing a real-time connection over said network to transmit said notification to each interested client process using the address identifiers stored in said second record.
According to a third aspect of the invention there is provided a communications system providing notification of the occurrence of an event, comprising:
a communication network;
one or more client processes coupled to said network; and
one or more server processes coupled to said network;
and wherein said one or more client processes register a set of said events of interest and, when currently active, their respective address identifiers with one or more of said server processes, and one or more of said server processes detect the occurrence of an event, identify which of said client processes are interested in notification of said event and are currently active, and cause a real-time connection over said network to transmit said notification to each identified client process.
According to a further aspect of the invention there is provided a communications system providing notification of the occurrence of an event, comprising:
a communication network;
one or more client processes coupled to said network; and
one or more server processes coupled to said network;
and wherein said one or more client processes register a set of said events of interest and, when currently active, register their respective address identifiers with one or more of said server processes, and said server processes form a first record of said client processes and their respective events of interest, form a second record containing current active ones of all said client processes and their respective address identifiers, said first and second records being available to a plurality of said server processes, detect the occurrence of an event, identify, from said first record, which of said client processes are interested in notification of said event and are currently active, and cause a real-time connection over said network to transmit said notification to each identified client using the address identifiers stored in said second record.
According to a further aspect of the invention there is provided a notification server for notifying the occurrence of an event to one or more client processes over a communications network, the notification server comprising:
a data store storing registration data from said client processes regarding events of interest to said client processes and, when said clients are currently active, their respective address identifiers;
a processor linked to said data store, receiving notification of an event having occurred, and searching said data store for those of the currently active client processes interested in said event; and
network connection means, linked to said processor, whereby a notification of said event is output to be sent to said interested client processes.
According to a further aspect of the invention there is provided a computer program product having a computer usable medium having a computer program embodied therein, for providing notification of the occurrence of an event over a network, said computer program product including:
computer program code means for registering a set of events of interest to one or more clients and, when said one or more clients are ready to receive notification, registering their respective address identifiers with a server;
computer program code means for detecting the occurrence of an event;
computer program code means for identifying which of said clients are interested in notification of said event and are currently active; and
computer program code means for causing a real-time connection over said network to transmit said notification to each identified client.